#!/usr/bin/env python
# coding: utf-8

'''
response方法的调用顺序
'''
import tornado.web
import tornado.httpserver
import tornado.ioloop
from tornado.web import url,RequestHandler

'''
在正常情况未抛出错误时，调用顺序为：
    set_defautl_headers()
    initialize()
    prepare()
    HTTP方法
    on_finish()
在有错误抛出时，调用顺序为：
    set_default_headers()
    initialize()
    prepare()
    HTTP方法
    set_default_headers()
    write_error()
    on_finish()
'''
class IndexHandler(RequestHandler):

    def initialize(self):
        print("调用了initialize()")

    def prepare(self):
        print("调用了prepare()")

    def set_default_headers(self):
        print("调用了set_default_headers()")

    def write_error(self, status_code, **kwargs):
        print("调用了write_error()")

    def get(self):
        print("调用了get()")

    def post(self):
        print("调用了post()")
        self.send_error(200)  # 注意此出抛出了错误

    def on_finish(self):
        print("调用了on_finish()")